package exerciciojsf.modelo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Anuncio {

	private Long id;
	private Usuario usuario;
	private String titulo;
	private String resumo;
	private String texto;
	private Map<Long, Comentario> comentarios = new HashMap<Long, Comentario>();
	private Long idComentario = 1L;

	public Anuncio() {
	}

	public Anuncio(Long id, Usuario usuario, String titulo, String resumo,
			String texto) {
		this.id = id;
		this.usuario = usuario;
		this.titulo = titulo;
		this.resumo = resumo;
		this.texto = texto;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	public Map<Long, Comentario> getComentarios() {
		return comentarios;
	}

	public List<Comentario> getListaComentarios() {
		
//		Sempre que se chama comentarios.values(), ocorre o problema.
		return new ArrayList<Comentario>(comentarios.values());
		
//		O simples fato de não usar o comentarios.values() ou iterar sobre ele já não ocorre o problema.
		/*
		 List<Comentario> comentariosList = new ArrayList<>();
		 comentariosList.add(new Comentario("nome", "mensagem"));
		 return comentariosList;
		*/
	}

	public void setComentarios(Map<Long, Comentario> comentarios) {
		this.comentarios = comentarios;
	}

	public String getResumo() {
		return resumo;
	}

	public void setResumo(String resumo) {
		this.resumo = resumo;
	}

	public void comentar(Comentario comentario) {
		comentario.setId(idComentario);
		comentarios.put(idComentario, comentario);
		idComentario++;
	}
}
